package model.entities;

import java.awt.Color;
import java.awt.Point;

import model.Bin;
import model.GameBoard;

/**
 * Interface for game entities contained
 * in a cell of the game board.
 * 
 * @author ben
 *
 */
public interface IEntity {
	
	/**
	 * The delegate method that the evaluator uses to
	 * mutate a laser beam object.
	 * @param inDirection - where beam is originating from
	 * @param beamColor TODO
	 * 
	 * @return - whether the beam is blocked or the beam continues on a path
	 */
	public Direction handleLaserBeam(Direction inDirection, Color beamColor);
	
	public void handleClick(int button);
	
	public boolean addSelfToGameBoard(GameBoard gameBoard, Point cell); // ya, I did this.... :(
	
	public void addSelfToBin(Bin bin);
	
	public boolean isMovable();

}
